// ITarget.cs

using System.Collections.Generic;

/// <summary>
/// 定义了所有可被效果系统作用的对象（玩家、敌人）必须拥有的属性和方法。
/// 这是一个协作的“合同”，确保 EffectSystem 能够安全地读写目标数据。
/// </summary>
public interface ITarget
{
    // === 核心属性（EffectSystem 需要读写的部分）===
    int currentHP { get; set; }
    int maxHP { get; }
    int Block { get; set; }

    // === Buff/Debuff 管理（必须有）===
    
    /// <summary>
    /// 向目标添加一个新的 Buff 状态。
    /// </summary>
    /// <param name="buff">要添加的 Buff 实例。</param>
    void AddBuff(Buff buff);

    /// <summary>
    /// 获取目标身上指定类型的 Buff 实例。
    /// </summary>
    /// <param name="type">Buff 类型。</param>
    /// <returns>找到的 Buff 实例，如果没有则返回 null。</returns>
    Buff GetBuff(BuffType type);
    
    // --- [新增方法：供 EffectSystem 调用，以管理 Buff 流程] ---
    
    /// <summary>
    /// 获取目标身上的所有 Buff 列表。（供 EffectSystem 遍历执行效果和清理）
    /// </summary>
    List<Buff> GetAllBuffs();
    
    /// <summary>
    /// 清理目标身上所有层数小于等于零的 Buff。（通常在回合结束时调用）
    /// </summary>
    void RemoveExpiredBuffs();
    // TODO: 可添加其他方法，例如 GetRelics() 用于遗物交互
}